package com.example.heimashop.api;

import com.example.heimashop.model.BannerResponse;
import com.example.heimashop.model.CategoryResponse;
import com.example.heimashop.model.FloorResponse;
import com.example.heimashop.model.NavigationResponse;
import com.example.heimashop.model.ProductDetailResponse;
import com.example.heimashop.model.ProductListResponse;

import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

/**
 * API接口定义
 */
public interface ApiService {

    /**
     * 获取首页轮播图
     */
    @GET("api/public/v1/home/swiperdata")
    Observable<BannerResponse> getBanners();

    /**
     * 获取首页导航
     */
    @GET("api/public/v1/home/catitems")
    Observable<NavigationResponse> getNavigation();

    /**
     * 获取首页楼层数据
     */
    @GET("api/public/v1/home/floordata")
    Observable<FloorResponse> getFloorData();

    /**
     * 获取商品分类
     */
    @GET("api/public/v1/categories")
    Observable<CategoryResponse> getCategories();

    /**
     * 搜索商品
     * @param query 搜索关键字
     * @param pagenum 页码
     * @param pagesize 每页数量
     */
    @GET("api/public/v1/goods/search")
    Observable<ProductListResponse> searchProducts(@Query("query") String query,
                                                    @Query("pagenum") int pagenum,
                                                    @Query("pagesize") int pagesize);

    /**
     * 获取商品列表
     * @param cid 分类ID
     * @param pagenum 页码
     * @param pagesize 每页数量
     */
    @GET("api/public/v1/goods/search")
    Observable<ProductListResponse> getProductList(@Query("cid") int cid,
                                                    @Query("pagenum") int pagenum,
                                                    @Query("pagesize") int pagesize);

    /**
     * 获取商品详情
     * @param goodsId 商品ID
     */
    @GET("api/public/v1/goods/detail")
    Observable<ProductDetailResponse> getProductDetail(@Query("goods_id") int goodsId);

    /**
     * 搜索建议
     * @param query 搜索关键字
     */
    @GET("api/public/v1/goods/qsearch")
    Observable<ProductListResponse> quickSearch(@Query("query") String query);
}
